<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <p data-lake-id="uba394499" id="uba394499"><span data-lake-id="u6dd3333a" id="u6dd3333a">其实最近两年自己一直在做面试官，也面试过很多优秀的人，心里大概有一个标准，知道什么样的人才是我们想要的人。</span></p>
  <p data-lake-id="ud61732dd" id="ud61732dd"><br></p>
  <p data-lake-id="u654fbae4" id="u654fbae4"><span data-lake-id="ua54a438b" id="ua54a438b">但是这个标准我一直都没有仔细的去思考过，刚好最近有时间，我好好的思考了一下，根据我的理解，谈一谈我认为的大厂程序员的人才画像是怎样的。</span></p>
  <p data-lake-id="uffac2990" id="uffac2990"><br></p>
  <p data-lake-id="uc8d3d96d" id="uc8d3d96d"><span data-lake-id="u5f655bc4" id="u5f655bc4">我觉得大厂需要的人才大概需要具备这几方面的能力：</span></p>
  <p data-lake-id="uc0d65cd5" id="uc0d65cd5"><br></p>
  <ul list="u25b1d4dc">
   <li fid="u53e8f8ac" data-lake-id="u19d273c7" id="u19d273c7"><span data-lake-id="uc1594a7f" id="uc1594a7f">1、软件开发能力</span></li>
   <li fid="u53e8f8ac" data-lake-id="u78d110a0" id="u78d110a0"><span data-lake-id="u69b7269c" id="u69b7269c">2、架构设计能力</span></li>
   <li fid="u53e8f8ac" data-lake-id="u04f47808" id="u04f47808"><span data-lake-id="u133b54d2" id="u133b54d2">3、项目管理能力</span></li>
   <li fid="u53e8f8ac" data-lake-id="uf8b51978" id="uf8b51978"><span data-lake-id="u82c05133" id="u82c05133">4、线上运维能力</span></li>
   <li fid="u53e8f8ac" data-lake-id="u340924ad" id="u340924ad"><span data-lake-id="u6d8b187f" id="u6d8b187f">5、业务理解能力</span></li>
   <li fid="u53e8f8ac" data-lake-id="u92f94b3e" id="u92f94b3e"><span data-lake-id="u2f9e733c" id="u2f9e733c">6、学习能力</span></li>
   <li fid="u53e8f8ac" data-lake-id="u09cea0bf" id="u09cea0bf"><span data-lake-id="ucec30c63" id="ucec30c63">7、影响力</span></li>
   <li fid="u53e8f8ac" data-lake-id="u2a25bde7" id="u2a25bde7"><span data-lake-id="u9226097f" id="u9226097f">8、目标导向</span></li>
  </ul>
  <p data-lake-id="u9d0d8470" id="u9d0d8470"><br></p>
  <p data-lake-id="u0d93b4e5" id="u0d93b4e5"><span data-lake-id="u7cb4511d" id="u7cb4511d">比如，我们到阿里巴巴的招聘网站上，随便找几个工程师岗位，看一下岗位要求：</span></p>
  <p data-lake-id="u676b7414" id="u676b7414"><br></p>
  <p data-lake-id="u350bbc48" id="u350bbc48"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1685433437343-ba79ec13-3d90-43d8-82db-264162cda2b4.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_42%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="u329e5a65" id="u329e5a65">￼</span></p>
  <p data-lake-id="ue3f4e6d5" id="ue3f4e6d5"><br></p>
  <p data-lake-id="ufcab1c5d" id="ufcab1c5d"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1685433437355-f9397e66-7a03-413d-bf75-2f6009cb67b0.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_43%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="uccfdba01" id="uccfdba01">￼</span></p>
  <p data-lake-id="ufea77ccd" id="ufea77ccd"><br></p>
  <p data-lake-id="u954e260e" id="u954e260e"><span data-lake-id="u9db94104" id="u9db94104">这些岗位描述和要求里面的内容，基本都能和以上几个能力对应的上：</span></p>
  <p data-lake-id="ud69dd425" id="ud69dd425"><br></p>
  <p data-lake-id="ud149b98d" id="ud149b98d"><span data-lake-id="ufda1ddf7" id="ufda1ddf7">负责平台核心功能、公共模块的规划及架构设计，包括系统架构设计、接口规范制定、技术文档、单元测试的编写等； -----&gt; </span><code data-lake-id="ude48bbf7" id="ude48bbf7"><strong><span data-lake-id="u39b977c2" id="u39b977c2">架构设计能力</span></strong></code></p>
  <p data-lake-id="uc21c6db4" id="uc21c6db4"><br></p>
  <p data-lake-id="u2814ca78" id="u2814ca78"><span data-lake-id="ue08ee6b7" id="ue08ee6b7">业务模型理解和抽象</span><strong><span data-lake-id="uefa1a630" id="uefa1a630">能力突出</span></strong><span data-lake-id="u7d7ed997" id="u7d7ed997">，参与科学决策、数字兴业、数字治理等相关系统的架构设计，承担核心模块的代码编写 。 -----&gt; </span><code data-lake-id="u301292bd" id="u301292bd"><strong><span data-lake-id="u27b0a295" id="u27b0a295">架构设计能力</span></strong></code></p>
  <p data-lake-id="ue02001d7" id="ue02001d7"><br></p>
  <p data-lake-id="uf06e1dc5" id="uf06e1dc5"><span data-lake-id="u4019b977" id="u4019b977">业务理解和建模</span><strong><span data-lake-id="uc2c97fb3" id="uc2c97fb3">能力突出</span></strong><span data-lake-id="ua84fd8f9" id="ua84fd8f9">，</span><strong><span data-lake-id="u3ed59f69" id="u3ed59f69">能独立完成</span></strong><span data-lake-id="u3d00a2d9" id="u3d00a2d9">系统（或核心模块）的设计、开发和系统维护；-----&gt; </span><code data-lake-id="uc80f4190" id="uc80f4190"><strong><span data-lake-id="uf6c5a592" id="uf6c5a592">业务理解能力</span></strong></code></p>
  <p data-lake-id="u936ee846" id="u936ee846"><br></p>
  <p data-lake-id="u572f234e" id="u572f234e"><strong><span data-lake-id="u443e55af" id="u443e55af">扎实的</span></strong><span data-lake-id="ue1ea7b1b" id="ue1ea7b1b">Java/JEE知识基础和功底(重点包括包括JVM、类装载机制、多线程并发、IO、网络等)，有</span><strong><span data-lake-id="u0b917906" id="u0b917906">比较优秀的</span></strong><span data-lake-id="u03b1e15b" id="u03b1e15b">动手能力；-----&gt; </span><code data-lake-id="u7749ab91" id="u7749ab91"><strong><span data-lake-id="u105fe5be" id="u105fe5be">软件开发能力</span></strong></code></p>
  <p data-lake-id="u06236270" id="u06236270"><br></p>
  <p data-lake-id="u084a7c35" id="u084a7c35"><strong><span data-lake-id="u57735349" id="u57735349">扎实的</span></strong><span data-lake-id="u395626a8" id="u395626a8">Java编程基础，理解io、反射、多线程、集合等，</span><strong><span data-lake-id="u39c0dbee" id="u39c0dbee">清楚</span></strong><span data-lake-id="uceaf5d94" id="uceaf5d94">JVM的原理；-----&gt; </span><code data-lake-id="u9cab09b7" id="u9cab09b7"><strong><span data-lake-id="u3a71ae7a" id="u3a71ae7a">软件开发能力</span></strong></code></p>
  <p data-lake-id="u77dd94fb" id="u77dd94fb"><br></p>
  <p data-lake-id="ub6c4407e" id="ub6c4407e"><strong><span data-lake-id="u428c9491" id="u428c9491">熟练掌握</span></strong><span data-lake-id="uac50acf7" id="uac50acf7">主流JAVA框架，并且能了解到它的原理和机制；</span><strong><span data-lake-id="u82493ff8" id="u82493ff8">熟悉</span></strong><span data-lake-id="u9a8dc2d0" id="u9a8dc2d0">MySQL/Oracle数据库中的一种或多种，有一定的SQL性能</span><strong><span data-lake-id="uea57d988" id="uea57d988">优化经验</span></strong><span data-lake-id="ubab9fd4b" id="ubab9fd4b">；-----&gt; </span><code data-lake-id="u3dcba35c" id="u3dcba35c"><strong><span data-lake-id="u313d1f57" id="u313d1f57">软件开发能力</span></strong></code></p>
  <p data-lake-id="u7740b79c" id="u7740b79c"><br></p>
  <p data-lake-id="u489d34af" id="u489d34af"><strong><span data-lake-id="u6a906655" id="u6a906655">良好的</span></strong><span data-lake-id="ud1db989b" id="ud1db989b">面向对象设计能力，对互联网高并发、高可用和高复用</span><strong><span data-lake-id="ued89fee4" id="ued89fee4">有一定的理解和实践</span></strong><span data-lake-id="u080ec1cd" id="u080ec1cd">，</span><strong><span data-lake-id="u7dd2679a" id="u7dd2679a">熟悉</span></strong><span data-lake-id="u80d0bd08" id="u80d0bd08">分布式技术（包括缓存、消息系统、热部署、JMX等）优先； -----&gt; </span><code data-lake-id="u84d76385" id="u84d76385"><strong><span data-lake-id="u303b88c9" id="u303b88c9">软件开发能力</span></strong></code></p>
  <p data-lake-id="u45328aed" id="u45328aed"><br></p>
  <p data-lake-id="u533c0388" id="u533c0388"><span data-lake-id="ud399bdcd" id="ud399bdcd">具有</span><strong><span data-lake-id="ub4b1adc2" id="ub4b1adc2">比较强的</span></strong><span data-lake-id="u1923504b" id="u1923504b">问题分析和处理能力，有</span><strong><span data-lake-id="ua138e998" id="ua138e998">比较优秀的</span></strong><span data-lake-id="ub63e6ba3" id="ub63e6ba3">动手能力，热衷技术，精益求精； -----&gt; </span><code data-lake-id="uc1391d35" id="uc1391d35"><strong><span data-lake-id="u7f86b705" id="u7f86b705">线上运维能力</span></strong></code></p>
  <p data-lake-id="u6c1bfd80" id="u6c1bfd80"><br></p>
  <p data-lake-id="ube25a6cc" id="ube25a6cc"><strong><span data-lake-id="u81a61db3" id="u81a61db3">有强烈的</span></strong><span data-lake-id="uca9dac99" id="uca9dac99">责任心，抗压能力强； -----&gt; </span><code data-lake-id="u8ba81db9" id="u8ba81db9"><strong><span data-lake-id="uf933abd0" id="uf933abd0">目标导向</span></strong></code></p>
  <p data-lake-id="uedc0cd18" id="uedc0cd18"><br></p>
  <p data-lake-id="u0c4361a0" id="u0c4361a0"><span data-lake-id="uad9f15b7" id="uad9f15b7">保障数字乡村业务系统的稳定性和项目质量，参与平台核心系统的架构设计。-----&gt; </span><code data-lake-id="u9a48d22e" id="u9a48d22e"><strong><span data-lake-id="uba1df5c9" id="uba1df5c9">项目管理能力</span></strong></code></p>
  <p data-lake-id="u5c7db83a" id="u5c7db83a"><br></p>
  <p data-lake-id="u4a891e85" id="u4a891e85"><span data-lake-id="u4e543b88" id="u4e543b88">业务理解和学习能力</span><strong><span data-lake-id="uad0f3da1" id="uad0f3da1">强</span></strong><span data-lake-id="ue2228805" id="ue2228805">，</span><strong><span data-lake-id="uaa2cfa4f" id="uaa2cfa4f">善于</span></strong><span data-lake-id="u15cf7e88" id="u15cf7e88">与商业/合作伙伴交流，有</span><strong><span data-lake-id="u8aae8fcf" id="u8aae8fcf">很好的</span></strong><span data-lake-id="udedf6712" id="udedf6712">适应和沟通能力，</span><strong><span data-lake-id="u5f43168d" id="u5f43168d">具备</span></strong><span data-lake-id="u55767f6a" id="u55767f6a">责任心、耐心、细心的品质；-----&gt;</span><code data-lake-id="uc0aae190" id="uc0aae190"><strong><span data-lake-id="ua366bd0e" id="ua366bd0e">业务理解能力</span></strong></code><span data-lake-id="ua0b5e146" id="ua0b5e146"> 、</span><code data-lake-id="u49acb7a0" id="u49acb7a0"><strong><span data-lake-id="uc18420a0" id="uc18420a0">学习能力</span></strong></code></p>
  <p data-lake-id="u1c55884d" id="u1c55884d"><br></p>
  <p data-lake-id="u236a1a19" id="u236a1a19"><span data-lake-id="u38eb0f1c" id="u38eb0f1c">以上的岗位描述中，对于一些能力的描述都是使用了一些形容词或者程度副词，如</span><code data-lake-id="ufc6b060a" id="ufc6b060a"><span data-lake-id="u8eeeebc0" id="u8eeeebc0">突出的</span></code><span data-lake-id="ub1555c8c" id="ub1555c8c">、</span><code data-lake-id="ucd3763b4" id="ucd3763b4"><span data-lake-id="u52622585" id="u52622585">扎实的</span></code><span data-lake-id="u766ad132" id="u766ad132">、</span><code data-lake-id="u61f25f25" id="u61f25f25"><span data-lake-id="ud6c5b553" id="ud6c5b553">比较优秀的</span></code><span data-lake-id="u5eace4a6" id="u5eace4a6">、</span><code data-lake-id="u69aaa1ea" id="u69aaa1ea"><span data-lake-id="uaa06b34e" id="uaa06b34e">熟悉</span></code><span data-lake-id="u109f87a7" id="u109f87a7">、</span><code data-lake-id="u70059d45" id="u70059d45"><span data-lake-id="uc5b5ee00" id="uc5b5ee00">熟练掌握</span></code><span data-lake-id="u1e012f35" id="u1e012f35">、</span><code data-lake-id="u9a916a6b" id="u9a916a6b"><span data-lake-id="u06f64422" id="u06f64422">比较强的</span></code><span data-lake-id="ue7ef3a4a" id="ue7ef3a4a">、</span><code data-lake-id="uadb910db" id="uadb910db"><span data-lake-id="u8fbafca2" id="u8fbafca2">有强烈的</span></code><span data-lake-id="u0c24bff3" id="u0c24bff3">、</span><code data-lake-id="u6b46167d" id="u6b46167d"><span data-lake-id="udbb216b0" id="udbb216b0">强</span></code><span data-lake-id="uf4f668fa" id="uf4f668fa">、</span><code data-lake-id="ue0e661b6" id="ue0e661b6"><span data-lake-id="u13eb26a5" id="u13eb26a5">善于</span></code><span data-lake-id="uca2f8cc3" id="uca2f8cc3">、</span><code data-lake-id="ud3c2d813" id="ud3c2d813"><span data-lake-id="uf528668c" id="uf528668c">很好的</span></code><span data-lake-id="uc1dc76da" id="uc1dc76da">等。</span></p>
  <p data-lake-id="u834f80fc" id="u834f80fc"><br></p>
  <p data-lake-id="u470b6042" id="u470b6042"><span data-lake-id="u66d673e0" id="u66d673e0">那么，到底什么样算是优秀？做到什么程度又酸是扎实、熟练能？又要怎么做才能达到突出呢？</span></p>
  <p data-lake-id="u85b549ce" id="u85b549ce"><br></p>
  <p data-lake-id="u76ce68e2" id="u76ce68e2"><span data-lake-id="u34f3897a" id="u34f3897a">接下来我们就以阿里的P6这个层级为例，来说一说以上这些能力大概需要达到什么样的标准。</span></p>
  <p data-lake-id="u4c274e70" id="u4c274e70"><br></p>
  <h3 data-lake-id="d95f8c96" id="d95f8c96"><span data-lake-id="ub4d82498" id="ub4d82498">软件开发能力</span></h3>
  <p data-lake-id="ua486cbda" id="ua486cbda"><br></p>
  <p data-lake-id="u84726f5b" id="u84726f5b"><span data-lake-id="u1da680e8" id="u1da680e8">对于一个程序员来说，软件开发能力当然是一个最最基础的能力了，很多面试主要考察的也都是软件开发能力。</span></p>
  <p data-lake-id="u6be6613d" id="u6be6613d"><br></p>
  <p data-lake-id="u0ca9afc5" id="u0ca9afc5"><span data-lake-id="u11a25b86" id="u11a25b86">那么，到底需要掌握哪些知识，才能达到阿里的P6的标准呢？</span></p>
  <p data-lake-id="uacd9487b" id="uacd9487b"><br></p>
  <p data-lake-id="uc1d94f66" id="uc1d94f66"><span data-lake-id="u1f585831" id="u1f585831">在回答这个问题之前，我看了很多大厂的招聘要求，并且回顾了一下以往面试时自己对于候选人的要求，大概总结出一些我认为比较重要的知识点。</span></p>
  <p data-lake-id="u67960fae" id="u67960fae"><br></p>
  <p data-lake-id="ua325fcb2" id="ua325fcb2"><span data-lake-id="uea900f0f" id="uea900f0f">可以说，如果以下这些知识点，候选人不能完全掌握的话，面试挂掉的概率很大。</span></p>
  <p data-lake-id="u21e96b70" id="u21e96b70"><br></p>
  <p data-lake-id="u771b1573" id="u771b1573"><span data-lake-id="u16dc6ced" id="u16dc6ced">1、Java基础。这个是最最基本的，像集合类、IO、反射这些常见的内容一定要做到如数家珍。</span></p>
  <p data-lake-id="u2cb5ff7c" id="u2cb5ff7c"><br></p>
  <p data-lake-id="u18d2db0f" id="u18d2db0f"><span data-lake-id="u55f534cd" id="u55f534cd">2、并发编程。这个也是面试很看重的知识点，对于线程安全问题、相关关键字的用法及原理、并发包等知识也要掌握。</span></p>
  <p data-lake-id="ue3756524" id="ue3756524"><br></p>
  <p data-lake-id="u4d7c9b40" id="u4d7c9b40"><span data-lake-id="u2f22eb3b" id="u2f22eb3b">3、JVM相关。这部分几乎是面试必考！JVM内存结构、GC相关的、调优、类加载等等这些的原理都要有了解的。</span></p>
  <p data-lake-id="ud5a9f40e" id="ud5a9f40e"><br></p>
  <p data-lake-id="u402b62b1" id="u402b62b1"><span data-lake-id="uaddf941f" id="uaddf941f">4、框架相关。目前主流的一些框架一定要了解的，如Spring等开源框架， 要知道用法及重要特性的原理、</span></p>
  <p data-lake-id="u9b70f66f" id="u9b70f66f"><br></p>
  <p data-lake-id="ud5e61313" id="ud5e61313"><span data-lake-id="u2b741c46" id="u2b741c46">4、分布式相关。这是大厂比较看重的一点了，对于分布式理论知识、缓存、消息、RPC等工具的用法和原理有了解的话，面试会轻松很多。</span></p>
  <p data-lake-id="u0887c24d" id="u0887c24d"><br></p>
  <p data-lake-id="u0b2b490a" id="u0b2b490a"><span data-lake-id="uc93ae372" id="uc93ae372">5、高并发、高性能方面知识。这部分也是挺重要的。</span></p>
  <p data-lake-id="ub77381e4" id="ub77381e4"><br></p>
  <p data-lake-id="u37b0e574" id="u37b0e574"><span data-lake-id="u3ff95e01" id="u3ff95e01">6、数据库相关知识。如Mysql的一些知识、锁、隔离级别、事务、索引等等。</span></p>
  <p data-lake-id="ufc34f197" id="ufc34f197"><br></p>
  <p data-lake-id="u91ed6062" id="u91ed6062"><span data-lake-id="uc83e74d1" id="uc83e74d1">7、数据结构与算法。这部分很多公司喜欢问一些算法题。</span></p>
  <p data-lake-id="u5bb30501" id="u5bb30501"><br></p>
  <p data-lake-id="u442e89ca" id="u442e89ca"><span data-lake-id="u7da49fd5" id="u7da49fd5">那么，具体如何衡量自己的知识面和深度是否足够呢，有一个简单的办法，那就是打开我之前总结的《</span><a href="https://github.com/hollischuang/toBeTopJavaer" target="_blank" data-lake-id="u60bb83f7" id="u60bb83f7"><span data-lake-id="u1c44e406" id="u1c44e406">Java工程师成神之路</span></a><span data-lake-id="u88cfe486" id="u88cfe486">》，从头到尾浏览一下知识点列表。如果你能满足以下要求，那么说明你已经基本达到了：</span></p>
  <p data-lake-id="u53c8019b" id="u53c8019b"><br></p>
  <p data-lake-id="uf0f0cd29" id="uf0f0cd29"><span data-lake-id="u6e183edc" id="u6e183edc">基础篇。掌握70% 底层篇。掌握60% 进阶篇。掌握50% 高级篇。掌握30%</span></p>
  <p data-lake-id="ua25f59df" id="ua25f59df"><br></p>
  <p data-lake-id="u1d5594d8" id="u1d5594d8"><span data-lake-id="ue680d3ab" id="ue680d3ab">那么，你的知识面的广度以及深度的话，我认为算是达到了一个相对符合标准的程度。</span></p>
  <p data-lake-id="u93e33168" id="u93e33168"><br></p>
  <h3 data-lake-id="decd0a6e" id="decd0a6e"><span data-lake-id="u624b1f5e" id="u624b1f5e">架构设计能力</span></h3>
  <p data-lake-id="udc2c09b7" id="udc2c09b7"><br></p>
  <p data-lake-id="u21423567" id="u21423567"><span data-lake-id="uf1db9743" id="uf1db9743">很多人会认为，我只是一个做开发的，又不是架构师，为什么要求我有架构能力呢？</span></p>
  <p data-lake-id="u40143d83" id="u40143d83"><br></p>
  <p data-lake-id="u97ddca18" id="u97ddca18"><span data-lake-id="ub8e305da" id="ub8e305da">这一点其实也能理解，因为一个P6在公司内部的定位应该是一个系统或者一个域的Owner，他需要负责这个系统和这个域的系统设计，那么就需要具备一定的架构设计能力，这样才能设计出合理的系统。</span></p>
  <p data-lake-id="u9ade2ccc" id="u9ade2ccc"><br></p>
  <p data-lake-id="ud034ad60" id="ud034ad60"><span data-lake-id="ud7347968" id="ud7347968">要想设计出好的架构，我觉得需要几个方面：</span></p>
  <p data-lake-id="u110ff663" id="u110ff663"><br></p>
  <p data-lake-id="u3c31b1cf" id="u3c31b1cf"><span data-lake-id="u4e9f7d32" id="u4e9f7d32">1、了解常见的架构设计原则</span></p>
  <p data-lake-id="uece4850e" id="uece4850e"><br></p>
  <p data-lake-id="ubb3e25f3" id="ubb3e25f3"><span data-lake-id="u39435bd8" id="u39435bd8">2、对于常见的架构问题的解决方案有了解。</span></p>
  <p data-lake-id="u87f485e1" id="u87f485e1"><br></p>
  <p data-lake-id="ubbba9947" id="ubbba9947"><span data-lake-id="u944ce12c" id="u944ce12c">3、有一定的架构经验。</span></p>
  <p data-lake-id="u9e80fe4c" id="u9e80fe4c"><br></p>
  <p data-lake-id="u66e69054" id="u66e69054"><span data-lake-id="u6c07c4fb" id="u6c07c4fb">首先，架构原则，那么就需要掌握一些基本的原则，如单一职责原则、开放封闭原则、里氏替代原则、依赖倒置原则、接口分离原则等。还有一些理论，如破窗理论、康威定律、墨菲定律等等。</span></p>
  <p data-lake-id="u16f373c9" id="u16f373c9"><br></p>
  <p data-lake-id="u4e08b773" id="u4e08b773"><span data-lake-id="u6ac2f7b1" id="u6ac2f7b1">除此之外，还需要对于常见的架构问题的解决方案有了解，很多人觉得这个好像离开发很远，到底什么是架构问题的？</span></p>
  <p data-lake-id="ue220c6ac" id="ue220c6ac"><br></p>
  <p data-lake-id="u5683ebc3" id="u5683ebc3"><span data-lake-id="u13529261" id="u13529261">其实并不远，简单点说，分布式一致性问题、性能问题、高并发问题。这些都可以理解为是架构问题的，所以，需要掌握的就是一些分布式相关知识。如果你能把以下几个问题回答好，那么你算是对于这些问题有一定的理解了：</span></p>
  <p data-lake-id="u82cdc261" id="u82cdc261"><br></p>
  <p data-lake-id="u426ed7af" id="u426ed7af"><span data-lake-id="uc04db1f1" id="uc04db1f1">1、如何分布式系统的解决数据一致性问题</span></p>
  <p data-lake-id="u120c5ef3" id="u120c5ef3"><br></p>
  <p data-lake-id="u82517b18" id="u82517b18"><span data-lake-id="ube2d8bff" id="ube2d8bff">2、说一下想要设计一个高并发的秒杀系统，都需要做哪些事情？</span></p>
  <p data-lake-id="u5e27ddc2" id="u5e27ddc2"><br></p>
  <h3 data-lake-id="7e368310" id="7e368310"><span data-lake-id="ub851c084" id="ub851c084">项目管理能力</span></h3>
  <p data-lake-id="u0b848882" id="u0b848882"><br></p>
  <p data-lake-id="u6c4b0cda" id="u6c4b0cda"><span data-lake-id="ua6000d10" id="ua6000d10">好像很多公司有专职的项目经理，但是在阿里的的大部分技术团队，都是不设立纯项目经理职位的，一般都是由项目组中的某位技术人员兼任项目经理角色，负责项目推进。</span></p>
  <p data-lake-id="ua8448455" id="ua8448455"><br></p>
  <p data-lake-id="u47287d48" id="u47287d48"><span data-lake-id="u2ef966dc" id="u2ef966dc">所以，一般一个小型项目，都会需要一个P6来担任项目经理的。那么相关管理的能力就至关重要了。一般需要可以作为负责人领导部门内跨团队的项目。</span></p>
  <p data-lake-id="ue46e7bac" id="ue46e7bac"><br></p>
  <p data-lake-id="u95355deb" id="u95355deb"><span data-lake-id="ud927844e" id="ud927844e">首先最基本的要求就是需要把控项目进度以及项目质量，这个就需要有很好的协调能力，可以在项目中很好的了解到成员的情况，适当的想办法解决合作的问题。</span></p>
  <p data-lake-id="u6f6b7e85" id="u6f6b7e85"><br></p>
  <p data-lake-id="u85601db9" id="u85601db9"><span data-lake-id="udaab3361" id="udaab3361">稍微高一点的要求，就是要求可以提前预知项目风险，并给出建设性建议。如果能够做到这一点的项目经理，就算是比较优秀的了。</span></p>
  <p data-lake-id="u40217c97" id="u40217c97"><br></p>
  <p data-lake-id="u0913f2a5" id="u0913f2a5"><span data-lake-id="u0f997c5b" id="u0f997c5b">还有一点我觉得也是比较重要的，那就是在项目管理中，如何协调业务方以及开发团队之间的矛盾问题，如何做到业务方满意，又让兄弟们不那么累。好的办法就是既要适当降低业务方的预期，又要提升兄弟们的战斗力。</span></p>
  <p data-lake-id="uee6ed26b" id="uee6ed26b"><br></p>
  <p data-lake-id="u1f379954" id="u1f379954"><span data-lake-id="ueb599a08" id="ueb599a08">还有一点，我觉得也挺重要的，那就是项目经理需要保护项目组好兄弟们，不要因为项目倒排就压榨兄弟们的时间，因为加班一方面会影响兄弟们的身体健康，另外加班加点上线的项目，一旦出了故障，还是需要兄弟们扛的。。。</span></p>
  <p data-lake-id="u97de754a" id="u97de754a"><br></p>
  <h3 data-lake-id="1454c7c2" id="1454c7c2"><span data-lake-id="u404db696" id="u404db696">线上运维能力</span></h3>
  <p data-lake-id="u7ad6f938" id="u7ad6f938"><br></p>
  <p data-lake-id="ue486d5a4" id="ue486d5a4"><span data-lake-id="u7dc4128f" id="u7dc4128f">我之前看过一份调查报告，在雇主调查中，雇主们最希望程序员掌握的技能列表中，问题排查能力是排在前三名中的。</span></p>
  <p data-lake-id="u18b557ec" id="u18b557ec"><br></p>
  <p data-lake-id="u87d10517" id="u87d10517"><span data-lake-id="u99c34beb" id="u99c34beb">而问题排查就是线上运维的能力之一。</span></p>
  <p data-lake-id="u38ed5dab" id="u38ed5dab"><br></p>
  <p data-lake-id="ua660be73" id="ua660be73"><span data-lake-id="uff9f19d9" id="uff9f19d9">不要以为线上运维就是专职的运维人员的工作，其实不是的。还是那句话，P6的人是一个系统或者一个域的Owner，他是要对这个系统的所有情况都负责的。</span></p>
  <p data-lake-id="ueb32dd34" id="ueb32dd34"><br></p>
  <p data-lake-id="u63e6e553" id="u63e6e553"><span data-lake-id="u22e893d7" id="u22e893d7">从开发到上线再到后期运维，他都要完全掌握，要知道线上的正常水位是怎样的，什么指标是存在问题的。出了问题之后又如何排查，这些都是至关重要的技能。</span></p>
  <p data-lake-id="uf93f45db" id="uf93f45db"><br></p>
  <p data-lake-id="u0dde9256" id="u0dde9256"><span data-lake-id="u87446c3f" id="u87446c3f">关于这种部分，其实需要掌握的知识点并不是特别的多，主要有以下这些：</span></p>
  <p data-lake-id="u1021e0c2" id="u1021e0c2"><br></p>
  <p data-lake-id="u0bdd47a1" id="u0bdd47a1"><span data-lake-id="ua72e24e4" id="ua72e24e4">1、常见的Linux命令的使用</span></p>
  <p data-lake-id="ub5525aa9" id="ub5525aa9"><br></p>
  <p data-lake-id="u718dde40" id="u718dde40"><span data-lake-id="u276043ec" id="u276043ec">2、常见的服务器指标（Load、CPU、内存、GC情况等）的查看、问题排查</span></p>
  <p data-lake-id="u56294770" id="u56294770"><br></p>
  <p data-lake-id="u32ee1da4" id="u32ee1da4"><span data-lake-id="ub835e663" id="ub835e663">3、系统调优、性能调优、sql优化等技能</span></p>
  <p data-lake-id="u03c186aa" id="u03c186aa"><br></p>
  <p data-lake-id="u8cede79b" id="u8cede79b"><span data-lake-id="ud4c34de9" id="ud4c34de9">4、常见问题排查思路。如死锁问题、慢SQL问题、内存溢出问题、Load飙高问题等等。</span></p>
  <p data-lake-id="uc5e13b30" id="uc5e13b30"><br></p>
  <h3 data-lake-id="70070053" id="70070053"><span data-lake-id="u7bd27910" id="u7bd27910">业务理解能力</span></h3>
  <p data-lake-id="u7c63ab40" id="u7c63ab40"><br></p>
  <p data-lake-id="u236f9cfc" id="u236f9cfc"><span data-lake-id="ue3756225" id="ue3756225">关于业务理解这部分，我之前单独写过一篇文章，里面其实阐述了我的观点，原文在这里：</span><a href="https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&amp;mid=2650125603&amp;idx=1&amp;sn=b8bf74f2f4f2823c0f8e2592cd91fbcf&amp;chksm=f36ba802c41c21143b8a7bd6a38529bd7d80b5013d86d9df7e247f89f61338ada8c711e37139&amp;scene=21#wechat_redirect" target="_blank" data-lake-id="u6f147927" id="u6f147927"><span data-lake-id="u45cbba01" id="u45cbba01">一条来自面试官的忠告：一定要非常熟悉你负责的业务</span></a></p>
  <p data-lake-id="u6a990f89" id="u6a990f89"><br></p>
  <p data-lake-id="u1b88d0fc" id="u1b88d0fc"><span data-lake-id="u1d8c241e" id="u1d8c241e">我在面试的时候，最开始都会问一下和业务有关的，如果候选人对于自己负责的业务都不是很理解的话，那么基本就很难过关了。</span></p>
  <p data-lake-id="u3516dfe1" id="u3516dfe1"><br></p>
  <p data-lake-id="ubd99c2c8" id="ubd99c2c8"><span data-lake-id="u7489ac97" id="u7489ac97">因为技术是服务于业务的，尤其是一个业务开发，如果自己做的业务都不了解，只是机械的完成自己负责的小功能的话，那么我不认为他是一个好的开发人员。</span></p>
  <p data-lake-id="u20ebf050" id="u20ebf050"><br></p>
  <p data-lake-id="ua9b6973d" id="ua9b6973d"><span data-lake-id="u1a42a1b9" id="u1a42a1b9">而且，我们希望一个达到高级开发的人，不只是一个只会做业务需求的人，达到这个层级的人，需要有自己的判断，先用嘴解决需求，不行的话再用代码解决。</span></p>
  <p data-lake-id="ua2c96bd3" id="ua2c96bd3"><br></p>
  <p data-lake-id="u486cae23" id="u486cae23"><span data-lake-id="ud808e8bd" id="ud808e8bd">我之前写过一篇文章，关于砍需求，大概阐述了一些我的观点：</span><a href="https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&amp;mid=2650126334&amp;idx=1&amp;sn=766fa4c3972cdd849b1ee4d2a6ff56e7&amp;chksm=f36baadfc41c23c9738513d86df4179934ad57c7336f29281eeea2826bd10bdc7ece961f5889&amp;scene=21#wechat_redirect" target="_blank" data-lake-id="u40346895" id="u40346895"><span data-lake-id="u39302124" id="u39302124">在家办公的我，砍需求砍得更狠了</span></a></p>
  <p data-lake-id="u1e66b482" id="u1e66b482"><br></p>
  <p data-lake-id="ud4e1207b" id="ud4e1207b"><span data-lake-id="u16fa0cac" id="u16fa0cac">一个好的P6应该是可以独立负责一个业务，并且分辨出需求的优先级，能够提出自己的意见。可以影响业务的走向的。</span></p>
  <p data-lake-id="u092c12bb" id="u092c12bb"><br></p>
  <p data-lake-id="u608dd3b2" id="u608dd3b2"><span data-lake-id="u96621efd" id="u96621efd">所以，针对大部分程序员来说，首先要理解业务，然后要尝试着提出自己意见，并且可以分辨出需求的优先级，并且敢于对不合理需求说不。</span></p>
  <p data-lake-id="u2eb7ca2a" id="u2eb7ca2a"><br></p>
  <p data-lake-id="uf1c77999" id="uf1c77999"><span data-lake-id="u31941163" id="u31941163">当然，在提出问题的和意见的时候，如果能够给出好的方案，那就更好了。大多数情况下，技术人员应该是整个项目组最了解业务的，毕竟代码是他写的。</span></p>
  <p data-lake-id="u902077cb" id="u902077cb"><br></p>
  <h3 data-lake-id="057aa7ae" id="057aa7ae"><span data-lake-id="u3d5b2683" id="u3d5b2683">学习能力</span></h3>
  <p data-lake-id="uf67f9f68" id="uf67f9f68"><br></p>
  <p data-lake-id="u119b786a" id="u119b786a"><span data-lake-id="uf77b4a33" id="uf77b4a33">学习能力不用我说，大家一定都觉得他很重要，这是毋庸置疑的。</span></p>
  <p data-lake-id="u6998ffde" id="u6998ffde"><br></p>
  <p data-lake-id="u9f48220e" id="u9f48220e"><span data-lake-id="u5eefc7b0" id="u5eefc7b0">但是经过这么多面试下来，我发现，这个能力并不是所有人都具备的。</span></p>
  <p data-lake-id="u73aacf47" id="u73aacf47"><br></p>
  <p data-lake-id="uc49a681e" id="uc49a681e"><span data-lake-id="ue95d341e" id="ue95d341e">P6这个层级在阿里并不是一个很高的层级，还有很大的上升空间，所以，真的需要很强的学习能力才能不断的提升自己。</span></p>
  <p data-lake-id="ud8356555" id="ud8356555"><br></p>
  <p data-lake-id="u15ccaa76" id="u15ccaa76"><span data-lake-id="u2978de39" id="u2978de39">而且，我理解的学习能力，不仅仅是快速学会一个知识，而是可以在实际工作中运用他。</span></p>
  <p data-lake-id="u28eb30af" id="u28eb30af"><br></p>
  <p data-lake-id="u9eecb442" id="u9eecb442"><span data-lake-id="u3440542c" id="u3440542c">所以，我面试的时候，一般会通过以下几个问题考察候选人的学习能力：</span></p>
  <p data-lake-id="u716d935d" id="u716d935d"><br></p>
  <p data-lake-id="u109528fa" id="u109528fa"><span data-lake-id="uc8b06f71" id="uc8b06f71">1、你知道最新版的JDK是哪个版本么？新特性知道吗？</span></p>
  <p data-lake-id="udd96de8b" id="udd96de8b"><br></p>
  <p data-lake-id="uaf9eb997" id="uaf9eb997"><span data-lake-id="ubaadf8c8" id="ubaadf8c8">2、Java 8的lambda表达式用过吗？</span></p>
  <p data-lake-id="u2878509d" id="u2878509d"><br></p>
  <p data-lake-id="uab5943bb" id="uab5943bb"><span data-lake-id="ub1a29a01" id="ub1a29a01">3、最近在看什么技术书籍吗？有什么技术是你刚刚学会的吗？</span></p>
  <p data-lake-id="u7a926117" id="u7a926117"><br></p>
  <p data-lake-id="u133871bd" id="u133871bd"><span data-lake-id="u84eca59e" id="u84eca59e">所以，一个高级开发，是可以快速上手新的技术或者业务，可以独挡一面的。所谓独当一面，并不只是在自己熟悉的那一面可以独挡，而是换个面，你也可以快速的独挡起来！</span></p>
  <p data-lake-id="u8761efbe" id="u8761efbe"><br></p>
  <h3 data-lake-id="23448dd1" id="23448dd1"><span data-lake-id="u670f385b" id="u670f385b">影响力</span></h3>
  <p data-lake-id="uc8ca7cdb" id="uc8ca7cdb"><br></p>
  <p data-lake-id="u541ac275" id="u541ac275"><span data-lake-id="u194816c1" id="u194816c1">影响力，这一点看起来很虚，但是确实也很重要的，这也是为什么很多招聘要求中会写"有开源项目经验优先"的一个原因之一。</span></p>
  <p data-lake-id="uc9645589" id="uc9645589"><br></p>
  <p data-lake-id="u0513a019" id="u0513a019"><span data-lake-id="uc54ee674" id="uc54ee674">从外面招人的话还不是特别的明显，阿里内部的晋升在影响力方面比较看重，因为提名晋升是要可以服众的，那么怎么让别人信服？那就是这个人有足够的影响力。</span></p>
  <p data-lake-id="uea69639c" id="uea69639c"><br></p>
  <p data-lake-id="u9743c29e" id="u9743c29e"><span data-lake-id="u95ddcc2d" id="u95ddcc2d">一般来说，对于一个P6的工程师来说，要求是要在自己的团队内部有一定的影响力，可以被团队内重视，一提到某个领域，大家第一个想到你。</span></p>
  <p data-lake-id="u9cb133bd" id="u9cb133bd"><br></p>
  <p data-lake-id="u5ae76d06" id="u5ae76d06"><span data-lake-id="ub78ab2cb" id="ub78ab2cb">提升影响力的方式有很多，比如经常帮助团队内同学解决技术问题、经常在团队内部做技术分享，经常分享技术文章等等。还有一些比如开源项目、专利、著作等也是很好的提升影响力的方式。</span></p>
  <p data-lake-id="u65b70d9d" id="u65b70d9d"><br></p>
  <p data-lake-id="ud144de10" id="ud144de10"><span data-lake-id="ubf339d4a" id="ubf339d4a">但是其实，影响力这东西，并不是刻意培养就能做得到的，这个是一个潜移默化的过程。真的做到可以正面的影响到别人，影响力就出来了。</span></p>
  <p data-lake-id="uc7811861" id="uc7811861"><br></p>
  <h3 data-lake-id="657ab90a" id="657ab90a"><span data-lake-id="uae07474b" id="uae07474b">目标导向</span></h3>
  <p data-lake-id="u42f5fba1" id="u42f5fba1"><br></p>
  <p data-lake-id="u1755a204" id="u1755a204"><span data-lake-id="u10b8cfcb" id="u10b8cfcb">很多招聘都会说要求有钻研精神、责任心、抗压能力强等，很多人理解是要求能加班，但是其实这是对于候选人是不是目标导向的一个筛选。</span></p>
  <p data-lake-id="ua15e1cd2" id="ua15e1cd2"><br></p>
  <p data-lake-id="u64a1dd66" id="u64a1dd66"><span data-lake-id="ucee66f63" id="ucee66f63">对于P6来说，目标导向就是可以做到指哪打哪，交给你的工作，你可以全力的把他做好，无论遇到什么样的困难，都可以想办法去克服。</span></p>
  <p data-lake-id="u87f91d8d" id="u87f91d8d"><br></p>
  <p data-lake-id="u155be238" id="u155be238"><span data-lake-id="u061a6a80" id="u061a6a80">目标导向，还可以换成一个词，那就是要性，一个要性强的人，必然是目标导向的人。</span></p>
  <p data-lake-id="u739543ce" id="u739543ce"><br></p>
  <p data-lake-id="u8514f6b1" id="u8514f6b1"><span data-lake-id="u28a8e902" id="u28a8e902">我之前写够一篇文章，表达了一下我自己对于要性的理解：</span><a href="https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&amp;mid=2650130323&amp;idx=1&amp;sn=7621774575841313fa632307271a6fa2&amp;chksm=f36bdab2c41c53a4ade203a7d1e28c5b33afe7c5f101d44b97622c5e1e918bd52ac002a30126&amp;scene=21#wechat_redirect" target="_blank" data-lake-id="ua00a6ca7" id="ua00a6ca7"><span data-lake-id="ud85e5bd1" id="ud85e5bd1">谈谈阿里所谓的"要性"</span></a></p>
  <p data-lake-id="u85d85685" id="u85d85685"><br></p>
  <p data-lake-id="u2f4c387b" id="u2f4c387b"><span data-lake-id="u1e337811" id="u1e337811">"要性"就是代表着我不仅想做，我还一定要做成。</span></p>
  <p data-lake-id="u276a78cc" id="u276a78cc"><br></p>
  <h3 data-lake-id="25f9c7fa" id="25f9c7fa"><span data-lake-id="udb3e0810" id="udb3e0810">总结</span></h3>
  <p data-lake-id="u8bd14c5f" id="u8bd14c5f"><br></p>
  <p data-lake-id="u20e770f1" id="u20e770f1"><span data-lake-id="ue83d1a83" id="ue83d1a83">以上，说了很多很多，我的一些理解。相信很多人会有不同的意见，这也是正常的，每个人的人才观都不太一样。</span></p>
  <p data-lake-id="u1989d587" id="u1989d587"><br></p>
  <p data-lake-id="u6d4f4462" id="u6d4f4462"><span data-lake-id="u852b1a7e" id="u852b1a7e">至少我面试的时候，招人的一个标准，就是和他聊下来之后，我觉得我可以和他很好的合作，可以把我认为重要的事情交给他的，那么他就可以通过我的面试了。</span></p>
  <p data-lake-id="u4d8f2854" id="u4d8f2854"><br></p>
  <p data-lake-id="uc935347f" id="uc935347f"><span data-lake-id="u5380e47a" id="u5380e47a">那么，如何在面试中给到我这种信任感，那就是让我觉得他技术能力不错，有一定的架构思维、有线上问题排查的能力、了解自己的业务、可以负责一个项目的管理、也能快速的学习一些新的知识。另外，如果可以让我感受到他是一个目标导向的人，并且有一定的影响力的话，那么我会更加愿意接受他。</span></p>
  <p data-lake-id="u7f76b7ea" id="u7f76b7ea"><br></p>
  <p data-lake-id="u357fa671" id="u357fa671"><span data-lake-id="u860ef8f9" id="u860ef8f9">以上，这8点，不仅仅是对P6这个层级的要求，其实不同的层级都适用，只是针对具体某一项，不同层级的要求不同而已。</span></p>
  <p data-lake-id="u736c1329" id="u736c1329"><br></p>
  <p data-lake-id="ufc1cf9d0" id="ufc1cf9d0"><span data-lake-id="ufcd53e17" id="ufcd53e17">当然，其实我并不觉得这只是阿里的要求，因为我只是在阿里当过面试官，所以我只能表达下我认为的阿里需要的人才是什么样的。</span></p>
  <p data-lake-id="uabcfc221" id="uabcfc221"><br></p>
  <p data-lake-id="ub477edc8" id="ub477edc8"><span data-lake-id="ufafe84ef" id="ufafe84ef">如果以后我去到其他公司了，或者自己创业了，那么我相信我招人的标准也一定还是这个。因为我始终认为，高级开发工程师，一定不仅仅是写代码的。</span></p>
  <p data-lake-id="ue4196b4f" id="ue4196b4f"><br></p>
  <p data-lake-id="uc392f5f9" id="uc392f5f9"><span data-lake-id="u77b2fc88" id="u77b2fc88">最后，希望我今天的文章可以让你找到一点方向。愿所有读者：长风破浪会有时，直挂云帆济沧海。</span></p>
 </body>
</html>